const Koa = require('koa');
//koa-bodyparser没有koa-body支持的东西多所以使用koa-body
// const bodyparser = require('koa-bodyparser');
const koaBody = require('koa-body');
const error = require('koa-json-error');//错误处理的插件
const parameter = require('koa-parameter');//校验参数是否正确的中间件
const mongoose = require('mongoose');//mongodb数据库连接
const koaStatic = require('koa-static');//生成图片链接的插件
const path = require('path');
const app = new Koa();
const routeing = require('./routes');
const { connectionStr } = require('./config');

mongoose.connect(connectionStr, {useNewUrlParser:true} ,()=>console.log('数据库连接成功'));
mongoose.connection.on('error',console.error);

app.use(koaStatic(path.join(__dirname, 'public')));
app.use(error({
    //使用了es6的解构语法
    postFormat: (e,{stack,...rest})=>process.env.NODE_ENV === 'production' ? rest:{stack,...rest}
}));//使用错误处理的插件
app.use(koaBody({
    multipart:true,//启用文件
    formidable: {
        uploadDir: path.join(__dirname,'/public/uploads'),
        keepExtensions: true,//保留拓展名
    }
}));
app.use(parameter(app));//使用校验参数中间件
routeing(app);
app.listen(3000);
console.log("服务器启动于3000端口");